#include <iostream>
#include <cstring>
#include <unistd.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/types.h>
#include <chrono>
#include <ctime>
#define FILE_NAME "fifo"

bool MAKE_FIFO()
{
    int ret = mkfifo(FILE_NAME, 0666);
    if (ret < 0)
    {
        std::cerr << "errno: " << errno << ", errstring: " << strerror(errno) << std::endl;
        return false;
    }
    std::cout << "make fifo success" << std::endl;
    return true;
}

int main()
{
Start:
    int rfd = open(FILE_NAME, O_WRONLY);
    if (rfd < 0)
    {
        if (MAKE_FIFO())
            goto Start;
        else
            return -1;
    }
    while (1)
    {
        char buf[1024];
        // 获取当前时间点
        auto now = std::chrono::system_clock::now();

        // 将时间点转换为time_t，以便使用ctime库进行格式化
        auto now_c = std::chrono::system_clock::to_time_t(now);

        // 使用ctime库将time_t转换为可读的字符串
        std::cout << "当前时间: " << 
        sprintf(buf, "%s %d nowtime: %s", "myid:", getpid(), std::ctime(&now_c));
        write(rfd, buf, strlen(buf));
        sleep(10);
    }

    return 0;
}